package com.example.androidgame.framework.impl;

import java.io.IOException;

import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.AudioManager;
import android.media.SoundPool;

import com.example.androidgame.framework.Audio;
import com.example.androidgame.framework.Music;
import com.example.androidgame.framework.Sound;
public class AndroidAudio implements Audio
{
	AssetManager assets;
	SoundPool soundPool;
	public AndroidAudio(Activity activity)
	{
		activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
		this.assets = activity.getAssets();
		//SoundPool is configured to be able to play back 20 sound effects in parallel
		this.soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
	}
	
	@Override
	public Music newMusic(String fileName) {
		// TODO Auto-generated method stub
		try
		{
			AssetFileDescriptor assetFileDescriptor = assets.openFd(fileName);
			return new AndroidMusic(assetFileDescriptor);
		}catch(IOException ex){throw new RuntimeException("Couldn't load music '"+fileName+"'");}
	
	}

	@Override
	public Sound newSound(String fileName) {
		// TODO Auto-generated method stub
		try{
			AssetFileDescriptor assetFileDescriptor = assets.openFd(fileName);
			int soundId = soundPool.load(assetFileDescriptor, 0);
			return new AndroidSound(soundPool, soundId);
		}catch(IOException ex){
			throw new RuntimeException("Coundn't load sound '" +fileName+"'");
		}
	}
	
}
